//package it.scambiocorse.areaprivata.controller;
//
//import java.io.IOException;
//import java.io.PrintWriter;
//import java.net.URL;
//import java.sql.Timestamp;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import it.scambiocorse.dao.AreaService;
//import it.scambiocorse.dao.ClienteService;
//import it.scambiocorse.dao.CodaService;
//import it.scambiocorse.dao.ServizioService;
//import it.scambiocorse.dao.UtenteDao;
//import it.scambiocorse.dao.UtenteService;
//import it.scambiocorse.model.AreaType;
//import it.scambiocorse.model.AutistaType;
//import it.scambiocorse.model.ClienteType;
//import it.scambiocorse.model.CodaType;
//import it.scambiocorse.model.JTableType;
//import it.scambiocorse.model.ServizioType;
//import it.scambiocorse.model.SorgenteType;
//import it.scambiocorse.model.UtenteType;
//import it.scambiocorse.utils.Costanti;
//import it.scambiocorse.utils.InviaEmail;
//import it.scambiocorse.utils.LabelValueBean;
//import it.scambiocorse.utils.ResourceManager;
//import it.scambiocorse.utils.Utils;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//
//import org.springframework.beans.BeanWrapperImpl;
//import org.springframework.web.servlet.mvc.multiaction.*;
//import org.apache.log4j.Logger;
//import org.springframework.web.servlet.ModelAndView;
//import org.springframework.web.servlet.mvc.Controller;
//import org.springframework.web.servlet.view.RedirectView;
//import org.springframework.web.util.JavaScriptUtils;
//
//import sun.rmi.runtime.NewThreadAction;
//
//import com.google.gson.Gson;
//import com.google.gson.GsonBuilder;
//import com.google.gson.JsonArray;
//
//public class CopyOfAreaPrivataMultiController extends  MultiActionController {
//	private ServizioService servizioDao = null;
//	private AreaService areaDao = null;
//	private UtenteService utenteDao = null;
//	private ClienteService clienteDao = null;
//
//	
//
//	public AreaService getAreaDao() {
//		return areaDao;
//	}
//	public void setAreaDao(AreaService areaDao) {
//		this.areaDao = areaDao;
//	}
//	public ServizioService getServizioDao() {
//		return servizioDao;
//	}
//	public void setServizioDao(ServizioService servizioDao) {
//		this.servizioDao = servizioDao;
//	}
//	public UtenteService getUtenteDao() {
//		return utenteDao;
//	}
//	public void setUtenteDao(UtenteService utenteDao) {
//		this.utenteDao = utenteDao;
//	}
//	public ClienteService getClienteDao() {
//		return clienteDao;
//	}
//	public void setClienteDao(ClienteService clienteDao) {
//		this.clienteDao = clienteDao;
//	}	
//
//
//
//	final Logger logger = Logger.getLogger(getClass());
//
//
//	
//	@Override 
//	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//			return super.handleRequest(request, response);
//	}
//	
//	
//	public ModelAndView riepilogo(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//		
//		try {
//			
//			
//			HttpSession session = request.getSession(false);
//			if (Utils.isNull(session) || session.getAttribute("dettaglio") == null) {
//				session = request.getSession(true);
//				logger.warn("Sessione Scaduta");
//				return new ModelAndView("expired");
//			} else {
//				dettaglio = (UtenteType)session.getAttribute("dettaglio");
//			}
//
//			url = "riepilogo";
//				ModelAndView mav = new ModelAndView(url);
//				String dataIniz = Costanti.DATA_INIZ;
//				long x =(Utils.dataStringTimestamp(Utils.getSysDateStr(), Costanti.DATA_PATTERN).getTime())+Costanti.TRE_GG_MS;
//				String dataFine = Utils.dataTimestampString(new Timestamp(x));
//				
//				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziIdUser(dettaglio.getIdUser(), dataIniz, dataFine);
//				Gson gson = new Gson();
//				
//				ArrayList<AutistaType> listaAutisti = areaDao.listaAutistiIdUser(dettaglio.getIdUser());
//				dettaglio.setListaAutisti(listaAutisti);
//				ArrayList<SorgenteType> listaSorgenti = areaDao.listaSorgentiIdUser(dettaglio.getIdUser());
//				dettaglio.setListaSorgenti(listaSorgenti);
//				ArrayList<ClienteType> clientiList = clienteDao.listaClienti(dettaglio.getIdUser());
//				dettaglio.setClientiList(clientiList);
//				
//
//				
//				logger.warn("Procedo al redirect "+url);
//				
//				mav.addObject("dataIniz", dataIniz);
//				mav.addObject("dataFine", dataFine);
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServizi.html");
//				mav.addObject("listaServizi", listaServizi);
//				mav.addObject("listaJson", gson.toJson(listaServizi));
//
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+((dettaglio != null) ? ""+dettaglio.getIdUser(): "N/A" ));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//	
//	public ModelAndView inserimentoServizio(HttpServletRequest request, HttpServletResponse response, ServizioType s) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				if (Utils.isNull(session) || session.getAttribute("dettaglio") == null) {
//				 throw new Exception("SESSIONE SCADUTA!");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				
//				url = "inserisciServizioAreaPrivata";
//				ModelAndView mav = new ModelAndView(url);
//
//				String tipoOpe = request.getParameter("form"); //FORMBACKINGOBJECT
//				if (!Utils.isValid(tipoOpe)) {
//					s.getArea().setIdArea( dettaglio.getAppoIdArea());
//					errori.add(new LabelValueBean("Ricordati che quando inserisci un servizio nessun campo e' obbligatorio e che la lista EXCEL o PDF riportera' solo i dati inseriti", ""));
//
//				} else if ("1".equals(tipoOpe)) {			   //SUBMIT
//					logger.debug("Controllo il tipo Accesso dell'utente ");
//					
//						
//						s.getArea().setIdArea(dettaglio.getAppoIdArea());
//						s.setIdUserInse(dettaglio.getIdUser());
//						
//						String oraFine = null;
//						if (Utils.isValid(s.getOreFine()) && Utils.isValid(s.getMinutiFine())) {
//							oraFine = s.getOreFine()+":"+s.getMinutiFine();
//							if (Utils.Time24HoursValidator(oraFine)) {
//								oraFine = Utils.getSysDateStr()+" "+s.getOreFine()+":"+s.getMinutiFine();
//								s.setOraFine(Utils.dataStringTimestamp(oraFine, "dd/MM/yyyy hh:mm"));
//							}
//						}
//						
//						// CONTROLLO ORARIO SE HA INSERITO DATA DEVE INSERIRE L'ORA
//						if (Utils.isValid(s.getData()) && (Utils.isValid(s.getOre()) && Utils.isValid(s.getMinuti())) ) {
//							int idServ = servizioDao.inserisciServizio(s);
//							if (idServ > 0) {
//								ok.add(new LabelValueBean("Servizio inserito correttamente, ", ""));
//							} else {
//								errori.add(new LabelValueBean("Si sono verificati degli errori durante l'inserimento, per favore contattare l'assistenza, ", ""));
//							}
//						} else {
//							errori.add(new LabelValueBean("Specificare data e ora del servizio", ""));
//						}
//
////						}
//					
//					}
//				logger.warn("Procedo al redirect "+url);
//				
//				
//		    	if (errori.size() > 0) {
//		    		request.setAttribute("listaErrori", errori);
//		    	}
//		    	
//		    	if (ok.size() > 0) {
//		    		request.setAttribute("listaOk", ok);
//		    	}
//				
//				
//				
//				mav.addObject("command", s );
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//	
//	
//	public ModelAndView modificaServizio(HttpServletRequest request, HttpServletResponse response, ServizioType s) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "modificaServizioAreaPrivata";
//				ModelAndView mav = new ModelAndView(url);
//				
//				
//				
//				String caller =  request.getParameter("caller");
//				String tipoOpe = request.getParameter("form"); //FORMBACKINGOBJECT
//				if (!Utils.isValid(tipoOpe)) {
//					s = servizioDao.dettaglioServizioIdServUser(s.getIdServUser(), dettaglio.getIdUser());
////					dettaglio.setListaPartecipanti(areaDao.listaPartecipanti(s.getArea().getIdArea()));
//
//				} else
//					if ("1".equals(tipoOpe)) {			   //SUBMIT
//					logger.debug("Controllo il tipo Accesso dell'utente ");
//
//						logger.debug("L'utente e' abilitato, procedo alla modifica");
//						
//							try {
//								
//								String oraFine = null;
//								if (Utils.isValid(s.getOreFine()) && Utils.isValid(s.getMinutiFine()) ){
//									oraFine = Utils.getSysDateStr()+" "+s.getOreFine()+":"+s.getMinutiFine();
//									if (!Utils.Time24HoursValidator(oraFine)) {
//										s.setOraFine(Utils.dataStringTimestamp(oraFine, "dd/MM/yyyy hh:mm"));
//									}
//								}								
//								s.getArea().setIdArea(dettaglio.getAppoIdArea());
//								s.setIdUserInse(dettaglio.getIdUser());
//								servizioDao.modificaServizio(s);
//								s = servizioDao.dettaglioServizioIdServUser(s.getIdServUser(), dettaglio.getIdUser());
//								ok.add(new LabelValueBean("Servizio modificato correttamente, ", ""));
//								
//							} catch (Exception e) {
//								errori.add(new LabelValueBean("Si sono verificati degli errori durante l'inserimento, per favore contattare l'assistenza, ", ""));
//							}
//				}
//				logger.warn("Procedo al redirect "+url);
//				
//				
//		    	if (errori.size() > 0) {
//		    		request.setAttribute("listaErrori", errori);
//		    	}
//		    	
//		    	if (ok.size() > 0) {
//		    		request.setAttribute("listaOk", ok);
//		    	}
//				
//				
//				
//				mav.addObject("command", s );
//				mav.addObject("caller", caller );
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}	
//	
//	
//	
//	public ModelAndView modificaAutista(HttpServletRequest request, HttpServletResponse response, AutistaType a) throws Exception {
//	UtenteType dettaglio =  null;
//    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//
//
//	String url = null;
//	try {
//		
//			 
//			HttpSession session = request.getSession(false);
//			if (session == null) {
//				logger.warn("Sessione Scaduta");
//			} else {
//				dettaglio = (UtenteType)session.getAttribute("dettaglio");
//			}
//			
//			url = "modificaAutista";
//			ModelAndView mav = new ModelAndView(url);
//			String form = request.getParameter("form");
//			logger.debug("Prelevo l'autista dalla lista autisti");
//			 if (!Utils.isValid(form)) {
//					int idAutista = Integer.parseInt(request.getParameter("id_autista"));
//					for (AutistaType af : dettaglio.getListaAutisti()) {
//						if (af.getIdAutista() == idAutista) {
//							a = af;
//							break;
//						}
//					} 
//			 } else if("1".equals(form)) {	 // DOPO IL SUBMIT 
//				if (!Utils.isValid(a.getNome())) {
//					errori.add(new LabelValueBean("Inserire il nome col quale vuoi identificare l'autista", ""));
//				} else {
//						logger.debug("Procedo alla modifica dell'autista");
//						boolean check = areaDao.modificaAutista(a);
//						
//						if (!check) {
//							errori.add(new LabelValueBean("Si sono verificati degli errori durante la modifica, perfavore contattare l'assistenza", ""));
//						} else {
//							ok.add(new LabelValueBean("L'autista \""+a.getNome()+"\" e' stato modificato correttamente", ""));
//							dettaglio.setListaAutisti(areaDao.listaAutistiIdUser(dettaglio.getIdUser()));
//						}
//				}
//			}
//			
//	    	if (errori.size() > 0) {
//	    		request.setAttribute("listaErrori", errori);
//
//	    	}
//	    	
//	    	if (ok.size() > 0) {
//	    		request.setAttribute("listaOk", ok);
//	    	}
//			
//			logger.warn("Procedo al redirect "+url);
//			mav.addObject("command", a);
//			return mav.addObject("dettaglio", dettaglio);
//			
//	}catch (Exception e) {
//		logger.error("SI E' VERIFICATO UN ERRORE");
//		logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//		logger.error(e);
//		return new ModelAndView("gestioneErrore").addObject(e);
//	}
//}	
//		
//	
//	
////	public ModelAndView modificaSorgente(HttpServletRequest request, HttpServletResponse response, SorgenteType s) throws Exception {
////	UtenteType dettaglio =  null;
////    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
////    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
////
////
////	String url = null;
////	try {
////		
////			 
////			HttpSession session = request.getSession(false);
////			if (session == null) {
////				logger.warn("Sessione Scaduta");
////			} else {
////				dettaglio = (UtenteType)session.getAttribute("dettaglio");
////			}
////			
////			url = "modificaSorgente";
////			ModelAndView mav = new ModelAndView(url);
////			String form = request.getParameter("form");
////			logger.debug("Prelevo la sorgente dalla lista autisti");
////			 if (!Utils.isValid(form)) {
////					int idSorgente = Integer.parseInt(request.getParameter("id_sorg"));
////					for (SorgenteType sf : dettaglio.getListaSorgenti()) {
////						if (sf.getIdSorgente() == idSorgente) {
////							s = sf;
////							break;
////						}
////					} 
////			 } else if("1".equals(form)) {	 // DOPO IL SUBMIT 
////				if (!Utils.isValid(s.getNome())) {
////					errori.add(new LabelValueBean("Inserire il nome col quale vuoi identificare la sorgente", ""));
////				} else {
////						logger.debug("Procedo alla modifica della sorgente");
////						boolean check = areaDao.modificaSorgente(s);
////						
////						if (!check) {
////							errori.add(new LabelValueBean("Si sono verificati degli errori durante la modifica, perfavore contattare l'assistenza", ""));
////						} else {
////							ok.add(new LabelValueBean("La sorgente \""+s.getNome()+"\" e' stata modificato correttamente", ""));
////							dettaglio.setListaSorgenti(areaDao.listaSorgentiIdUser(dettaglio.getIdUser()));
////						}
////				}
////			}
////			
////	    	if (errori.size() > 0) {
////	    		request.setAttribute("listaErrori", errori);
////
////	    	}
////	    	
////	    	if (ok.size() > 0) {
////	    		request.setAttribute("listaOk", ok);
////	    	}
////			
////			logger.warn("Procedo al redirect "+url);
////			mav.addObject("command", s);
////			return mav.addObject("dettaglio", dettaglio);
////			
////	}catch (Exception e) {
////		logger.error("SI E' VERIFICATO UN ERRORE");
////		logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
////		logger.error(e);
////		return new ModelAndView("gestioneErrore").addObject(e);
////	}
////}	
////	
//	
//	
//	public ModelAndView inviaServizio(HttpServletRequest request, HttpServletResponse response, ServizioType s) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "inviaServizio";
//				ModelAndView mav = new ModelAndView(url);
//
//				
//				
//				String caller =  request.getParameter("caller");
//				String tipoOpe = request.getParameter("form"); 
//				if (!Utils.isValid(tipoOpe)) {  //FORMBACKINGOBJECT
//					s = servizioDao.dettaglioServizioIdServUser(s.getIdServUser(), dettaglio.getIdUser());
//					logger.debug("Preparazione all'invio del servizio");
//
//				}
//				if ("1".equals(tipoOpe)) {			   //SUBMIT
//					logger.debug("Premuto SUBMIT, procedo ai controlli per l'invio dell'email");
//
//					if (!Utils.isValid(s.getAutista().getEmail())) {
//						errori.add(new LabelValueBean("Inserisci l'email a cui vuoi inviare il servizio, ", ""));
//					} else {
//						InviaEmail im = (InviaEmail)ResourceManager.getBean("inviaEmail");
//						s.setUserNameInse(dettaglio.getNome()+" "+dettaglio.getCognome());
//						logger.debug("Controllo che sia un utente registrato");
//						boolean isRegistered = false;
//						if (utenteDao.getIdUserDaEmail(s.getAutista().getEmail()) > 0){
//							isRegistered = true;
//						}
//						if (im.inviaServizio(s,isRegistered)) {
//							ok.add(new LabelValueBean("Servizio inviato correttamente all'indirizzo "+s.getAutista().getEmail(), ""));
//						} else {
//							errori.add(new LabelValueBean("Si sono verificati degli errori durante l'invio del servizio, per favore contattare l'assistenza, ", ""));
//						}
//					}
//						
//				}	
//				logger.warn("Procedo al redirect "+url);
//				
//				
//		    	if (errori.size() > 0) {
//		    		request.setAttribute("listaErrori", errori);
//		    	}
//		    	
//		    	if (ok.size() > 0) {
//		    		request.setAttribute("listaOk", ok);
//		    	}
//				
//				
//				
//				mav.addObject("command", s );
//				mav.addObject("back", caller );
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject("e", e);
//		}
//	}	
//
//	
//	public ModelAndView eliminaServizio(HttpServletRequest request, HttpServletResponse response, ServizioType s) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaServiziPerArea";
//				ModelAndView mav = new ModelAndView(url);
//				
//				//Stringhe per il filtro data
//					String dataIniz = request.getParameter("dataIniz");
//					String dataFine = request.getParameter("dataFine");
//					
//					logger.debug("Controllo il tipo Accesso dell'utente ");
//					
//						logger.debug("L'utente e' abilitato, procedo alla cancellazione");
//					
//							try {
//								servizioDao.eliminaServizio(s);
//								ok.add(new LabelValueBean("Servizio del giorno "+s.getData()+" alle ore "+s.getOre()+":"+s.getMinuti()+" e' stato ELIMINATO correttamente, ", ""));
//								
//
//							} catch (Exception e) {
//								errori.add(new LabelValueBean("Si sono verificati degli errori durante l'inserimento, per favore contattare l'assistenza, ", ""));
//							}
//					
//				logger.warn("Ricarico la lista");
//				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziPerArea(dettaglio.getAppoIdArea(), dataIniz, dataFine);
//					
//				
//				
//		    	if (errori.size() > 0) {
//		    		request.setAttribute("listaErrori", errori);
//		    	}
//		    	
//		    	if (ok.size() > 0) {
//		    		request.setAttribute("listaOk", ok);
//		    	}
//				
//				
//		    	mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServiziAutista.html");
//				mav.addObject("command", s );
//				mav.addObject("listaServizi", listaServizi );
//				logger.warn("Procedo al redirect "+url);
//
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}		
//
//	public ModelAndView eliminaPart(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaServiziPerArea";
//				ModelAndView mav = new ModelAndView(url);
//				
//				//Stringhe per il filtro data
//					String dataIniz = request.getParameter("dataIniz");
//					String dataFine = request.getParameter("dataFine");
//				//
//					int idUser = 0;
//					int idArea = 0;
//					if (Utils.isValid(request.getParameter("idUser"))) {
//						idUser = Integer.parseInt(request.getParameter("idUser"));
//						idArea = Integer.parseInt(request.getParameter("idArea"));
//					}
//					logger.debug("Controllo il tipo Accesso dell'utente ");
//					
//						logger.debug("L'utente e' abilitato, procedo alla cancellazione");
//							try {
//								areaDao.eliminaPart(idUser, idArea);
//								ok.add(new LabelValueBean("L'utente non puo' piu' accedere a quest'area, tutti i servizi precedentemente assegnatigli sono tornati liberi", ""));
//							} catch (Exception e) {
//								errori.add(new LabelValueBean("Si sono verificati degli errori durante l'inserimento, per favore contattare l'assistenza, ", ""));
//							}
//					
//				logger.warn("Ricarico la lista");
//				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziPerArea(dettaglio.getAppoIdArea(), dataIniz, dataFine);
//				dettaglio.setListaPartecipanti(areaDao.listaPartecipanti(idArea));
//				
//				
//		    	if (errori.size() > 0) {
//		    		request.setAttribute("listaErrori", errori);
//		    	}
//		    	
//		    	if (ok.size() > 0) {
//		    		request.setAttribute("listaOk", ok);
//		    	}
//				
//				
//		    	mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServizi.html");				// SE listaPart.size > 1 c'e' oltre a lui un altro utente
//				mav.addObject("showPartList", true); 
//				mav.addObject("listaServizi", listaServizi );
//				logger.warn("Procedo al redirect "+url);
//
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}		
//
//	
//	public ModelAndView inserisciAreaPrivata(HttpServletRequest request, HttpServletResponse response,AreaType area ) throws Exception {
//	logger.debug("Ento in inserisciAreaPrivata(...)");
//	
//	UtenteType dettaglio =  null;
//    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//
//    
//	String url = null;
//	try {
//			HttpSession session = request.getSession(false);
//			if (session == null) {
//				logger.warn("Sessione Scaduta");
//				sessioneScaduta(request, response);
//			} else {
//				dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				if (dettaglio == null)
//					sessioneScaduta(request, response);
//			}
//			
//			ModelAndView mav = null;
//	    	url = "inserisciArea";
//			if ("Indietro".equals(request.getParameter("Indietro")) ) {
//				mav = new ModelAndView(new RedirectView("listaAreePrivate.html"));
//				mav.addObject(dettaglio);
//				return mav;
//			}
//			
//			String tipoOpe = request.getParameter("form");
//			mav = new ModelAndView(url);
//
//				if ("1".equals(tipoOpe)) { // DOPO IL SUBMIT 
//					area.setIdOwner(dettaglio.getIdUser());
//					int idArea = 0;
//				if (!Utils.isValid(area.getNomeArea())) {
//					errori.add(new LabelValueBean("Inserire il nome col quale vuoi identificare la nuova area", ""));
//				} else {
//						logger.debug("Procedo all'inserimento dell'Area");
//						idArea = areaDao.inserisciArea(area);
//						
//						if (idArea < 0) {
//							errori.add(new LabelValueBean("Si sono verificati degli errori durante l'inserimento, perfavore contattare l'assistenza", ""));
//						} else {
//							ok.add(new LabelValueBean("L'area \""+area.getNomeArea()+"\" e' stata inserita correttamente", ""));
//							dettaglio.setAreeList(areaDao.listaAreePrivate(dettaglio.getIdUser()));
//							mav = new ModelAndView(new RedirectView("listaAreePrivate.html"));
//						}
//				}
//			}
//			
//	    	if (errori.size() > 0) {
//	    		request.setAttribute("listaErrori", errori);
//	    	}
//	    	
//	    	if (ok.size() > 0) {
//	    		request.setAttribute("listaOk", ok);
//	    	}
//			
//			logger.warn("Procedo al redirect "+url);
//			
//			
//			mav.addObject("command", area);
//			return mav.addObject("dettaglio", dettaglio);
//			
//	}catch (Exception e) {
//		logger.error("SI E' VERIFICATO UN ERRORE");
//		logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//		logger.error(e);
//		return new ModelAndView("gestioneErrore").addObject(e);
//	}
//}	
//	
//	public ModelAndView inserisciAutista(HttpServletRequest request, HttpServletResponse response, AutistaType a) throws Exception {
//	UtenteType dettaglio =  null;
//    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//
//
//	String url = null;
//	try {
//		
//			 
//			HttpSession session = request.getSession(false);
//			if (session == null) {
//				logger.warn("Sessione Scaduta");
//			} else {
//				dettaglio = (UtenteType)session.getAttribute("dettaglio");
//			}
//			
//			url = "inserisciAutista";
//			ModelAndView mav = new ModelAndView(url);
//			 if (Utils.isValid(request.getParameter("form"))) { // DOPO IL SUBMIT 
//				
//				int idAut = 0;
//				if (!Utils.isValid(a.getNome())) {
//					errori.add(new LabelValueBean("Inserire il nome col quale vuoi identificare l'autista", ""));
//				} else {
//						logger.debug("Procedo all'inserimento dell'autista");
//						a.setIdUserInse(dettaglio.getIdUser());
//						idAut = areaDao.inserisciAutista(a);
//						
//						if (idAut < 0) {
//							errori.add(new LabelValueBean("Si sono verificati degli errori durante l'inserimento, perfavore contattare l'assistenza", ""));
//						} else {
//							ok.add(new LabelValueBean("L'autista \""+a.getNome()+"\" e' stato inserito correttamente", ""));
//							dettaglio.setListaAutisti(areaDao.listaAutistiIdUser(dettaglio.getIdUser()));
//						}
//				}
//			}
//			
//	    	if (errori.size() > 0) {
//	    		request.setAttribute("listaErrori", errori);
//
//	    	}
//	    	
//	    	if (ok.size() > 0) {
//	    		request.setAttribute("listaOk", ok);
//	    	}
//			
//			logger.warn("Procedo al redirect "+url);
//	    	mav.addObject("back", request.getParameter("caller"));
//			mav.addObject("utenteRegistrato", new UtenteType());
//			mav.addObject("command", a);
//			return mav.addObject("dettaglio", dettaglio);
//			
//	}catch (Exception e) {
//		logger.error("SI E' VERIFICATO UN ERRORE");
//		logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//		logger.error(e);
//		return new ModelAndView("gestioneErrore").addObject(e);
//	}
//}	
//	
//
////	public ModelAndView inserisciSorgente(HttpServletRequest request, HttpServletResponse response) throws Exception {
////	logger.debug("Ento in inserisciSorgente(...)");
////	UtenteType dettaglio =  null;
////	SorgenteType src =  new SorgenteType();
////    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
////    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
////
////    
////	String url = null;
////	try {
////			HttpSession session = request.getSession(false);
////			if (session == null) {
////				logger.warn("Sessione Scaduta");
////			} else {
////				dettaglio = (UtenteType)session.getAttribute("dettaglio");
////			}
////			
////			url = "inserisciSorgente";
////			ModelAndView mav = new ModelAndView(url);
////			String tipoOpe = request.getParameter("form");
////			
////			if (!Utils.isValid(tipoOpe)) { //PRIMA VOLTA 
////				mav.addObject("command", src);
////				
////			} else if ("1".equals(tipoOpe)) { // DOPO IL SUBMIT 
////				
////				String nome = request.getParameter("nome");
////				src.setIdUserInse(dettaglio.getIdUser());
////				src.setNome(nome);
////				int idSrc = 0;
////				if (!Utils.isValid(nome)) {
////					errori.add(new LabelValueBean("Inserire il nome col quale vuoi identificare la sorgente", ""));
////				} else {
////						logger.debug("Procedo all'inserimento della sorgente");
////						idSrc = areaDao.inserisciSorgente(src);
////						
////						if (idSrc < 0) {
////							errori.add(new LabelValueBean("Si sono verificati degli errori durante l'inserimento, perfavore contattare l'assistenza", ""));
////						} else {
////							ok.add(new LabelValueBean("La sorgente \""+src.getNome()+"\" e' stata inserita correttamente", ""));
////							dettaglio.setListaSorgenti(areaDao.listaSorgentiIdUser(dettaglio.getIdUser()));
////						}
////				}
////			}
////			
////	    	if (errori.size() > 0) {
////	    		request.setAttribute("listaErrori", errori);
////
////	    	}
////	    	
////	    	if (ok.size() > 0) {
////	    		request.setAttribute("listaOk", ok);
////	    	}
////			
////			logger.warn("Procedo al redirect "+url);
////			mav.addObject("utenteRegistrato", new UtenteType());
////			mav.addObject("command", src);
////	    	mav.addObject("back", request.getParameter("caller"));
////			return mav.addObject("dettaglio", dettaglio);
////			
////	}catch (Exception e) {
////		logger.error("SI E' VERIFICATO UN ERRORE");
////		logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
////		logger.error(e);
////		return new ModelAndView("gestioneErrore").addObject(e);
////	}
////}	
////	
//	
//	
//
//	
//	
//	
//	public ModelAndView associaUtente(HttpServletRequest request, HttpServletResponse response, UtenteType u) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//			
//				 
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "associaUtenteArea";
//				ModelAndView mav = new ModelAndView(url);
//				dettaglio.setListaPartecipanti(areaDao.listaPartecipanti(dettaglio.getAppoIdArea()));
//				String tipoOpe = request.getParameter("form");
////				
//					if ("1".equals(tipoOpe)) { // DOPO IL SUBMIT 
//					if (!Utils.isValid(u.getEmail())) {
//						errori.add(new LabelValueBean("Inserire l'email dell'utente", ""));
//					} else {
//							
//							int idDaAssociare = utenteDao.getIdUserDaEmail(u.getEmail());
//							//Controllo che non sia se stesso
//							if (dettaglio.getIdUser() == idDaAssociare) {
//								errori.add(new LabelValueBean("Non puoi associare te stesso!", ""));
//							} else
//							//Controllo che esista 1
//								
//							if (idDaAssociare < 1) {
//								errori.add(new LabelValueBean("Non esiste nessun utente associato a questo indirizzo email, invitalo a registrarsi su scambio corse!", ""));
//							}  else {
//								//Controllo che non sia gia' associato 2
//								ArrayList<UtenteType>  listaPart = areaDao.listaPartecipanti(dettaglio.getAppoIdArea());
//								boolean check = false;
//								for (UtenteType uu : listaPart) {
//									if (idDaAssociare == uu.getIdUser()) {
//										check = true;
//										break;
//									}
//								}
//								
//								if (check) {
//									errori.add(new LabelValueBean("L'utente risulta gia' associato", ""));
//								} else {
//									
//									// Controllo che abbia inserito il tipo accesso 
//									if (u.getTipoAccesso() != 0) {
//										logger.debug("Procedo all'associazione dell'utente con l'area "+dettaglio.getAppoNomeArea());
//										areaDao.associaUtente(dettaglio.getAppoIdArea(), idDaAssociare, u.getTipoAccesso());
//										ok.add(new LabelValueBean("Utente "+u.getLogin()+" associato all'area "+dettaglio.getAppoNomeArea(), ""));
//									} else {
//										errori.add(new LabelValueBean("Specificare il tipo di accesso", ""));
//									}
//								}
//								// fine 2
//							}
//					}
//				}
//					
//					
//		    	if (errori.size() > 0) {
//		    		request.setAttribute("listaErrori", errori);
//		    	}
//		    	
//		    	if (ok.size() > 0) {
//		    		request.setAttribute("listaOk", ok);
//		    	}
//				
//				logger.warn("Procedo al redirect "+url);
//				mav.addObject("command", u);
//				mav.addObject("caller", "listaServizi.html");
//				
//				return mav.addObject("dettaglio", dettaglio);
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//	public ModelAndView listaServizi(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//
//		try {
//			
//			
//			HttpSession session = request.getSession(false);
//			if (Utils.isNull(session) || session.getAttribute("dettaglio") == null) {
//				session = request.getSession(true);
//				logger.warn("Sessione Scaduta");
//				return new ModelAndView("expired");
//			} else {
//				dettaglio = (UtenteType)session.getAttribute("dettaglio");
//			}
//
//				url = "listaServiziPerArea";
//				ModelAndView mav = new ModelAndView(url);
//				Gson g = new GsonBuilder().setDateFormat("yyyy-MM-dd k:mm:ss").create();
//
//				
//				ArrayList<SorgenteType> listaSorgenti = areaDao.listaSorgentiIdUser(dettaglio.getIdUser());
//				ArrayList<AutistaType> listaAutisti = areaDao.listaAutistiIdUser(dettaglio.getIdUser());
//				ArrayList<ClienteType> listaCLienti = cliente.listaClienti(dettaglio.getIdUser());
//				
//				HashMap selectLabel = new HashMap<String, Object>();
//				selectLabel.put("DisplayText", "Selezionare");
//				selectLabel.put("Value", "0");				
//				
//				ArrayList listaSorgentiJson = new ArrayList();
//				for (SorgenteType s : listaSorgenti) {
//					HashMap jj = new HashMap<String, Object>();
//					jj.put("DisplayText", s.getNome());
//					jj.put("Value", s.getIdSorgente());
//					listaSorgentiJson.add(jj);
//				}
//				listaSorgentiJson.add(0, selectLabel);
//				
//				ArrayList listaAutistiJson = new ArrayList();
//				for (AutistaType a : listaAutisti) {
//					HashMap jj = new HashMap<String, Object>();
//					jj.put("DisplayText", a.getNome());
//					jj.put("Value", a.getIdAutista());
//					listaAutistiJson.add(jj);
//				}
//				listaAutistiJson.add(0, selectLabel);
//				
//				ArrayList listaCLientiJson = new ArrayList();
//				for (ClienteType c : listaCLienti) {
//					HashMap jj = new HashMap<String, Object>();
//					jj.put("DisplayText", c.getDescNome());
//					jj.put("Value", c.getIdCliente());
//					listaAutistiJson.add(jj);
//				}
//				listaCLientiJson.add(0, selectLabel);
////				ArrayList<AreaType> areeList = areaDao.listaAreePrivate(dettaglio.getIdUser());
////				
////				dettaglio.setAppoIdArea(areeList.get(0).getIdArea());
////				dettaglio.setAppoNomeArea(areeList.get(0).getNomeArea()); 
////				
////
////				logger.debug("Controllo il tipo Accesso dell'utente ");//+dettaglio.getLogin());
////				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziPerArea(dettaglio.getAppoIdArea(), dataIniz, dataFine);
//				String dataIniz = request.getParameter("dataIniz");
//				String dataFine = request.getParameter("dataFine");
////				
////				dettaglio.setListaAutisti(listaAutisti);
////				ArrayList<SorgenteType> listaSorgenti = areaDao.listaSorgentiIdUser(dettaglio.getIdUser());
////				dettaglio.setListaSorgenti(listaSorgenti);
////				ArrayList<ClienteType> clientiList = utenteDao.listaClienti(dettaglio.getIdUser());
////				dettaglio.setClientiList(clientiList);
//				
////				dettaglio.setAreeList(areeList);
//				
//				logger.warn("Procedo al redirect "+url);
//				mav.addObject("dataIniz", dataIniz);
//				mav.addObject("dataFine", dataFine);
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServizi.html");
//				mav.addObject("listaSorgenti", g.toJson(listaSorgentiJson));
//				mav.addObject("listaAutisti", g.toJson(listaAutistiJson));
//				mav.addObject("listaClienti", g.toJson(listaCLientiJson));
//
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+((dettaglio != null) ? ""+dettaglio.getIdUser(): "N/A" ));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//		
//	
//	public ModelAndView listaServiziAutista(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaServiziAutista";
//				ModelAndView mav = new ModelAndView(url);
//				
//				int idAutista = 0;
//				if (Utils.isValid(request.getParameter("id_autista"))) {
//					idAutista = Integer.parseInt(request.getParameter("id_autista"));
//					String nomeAutista = request.getParameter("nome_aut");
//					dettaglio.setAppoIdAutista(idAutista);
//					dettaglio.setAppoNomeAutista(nomeAutista);
//				}
//
////				UtenteType autista = utenteDao.getUser(idAutista);
//				
//				String dataIniz = request.getParameter("dataIniz3");
//				String dataFine = request.getParameter("dataFine3");
//				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziAutista(dettaglio.getAppoIdAutista(), dataIniz, dataFine);
//				
//				logger.warn("Procedo al redirect "+url);
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServiziAutista.html");
//				mav.addObject("dataIniz", dataIniz);
//				mav.addObject("dataFine", dataFine);
//				mav.addObject("listaServizi", listaServizi);
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//
//	public ModelAndView listaServiziCliente(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaServiziCliente";
//				ModelAndView mav = new ModelAndView(url);
//				
//				if (Utils.isValid(request.getParameter("idCliente"))) {
//					dettaglio.setAppoIdCliente(Integer.parseInt(request.getParameter("idCliente")));
//				} 
//				
//				ClienteType cliente = clienteDao.getCliente(dettaglio.getAppoIdCliente());
//				
//				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziCliente(dettaglio.getAppoIdCliente(), null, null);
//				
//				logger.warn("Procedo al redirect "+url);
//				
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServiziCliente.html");
//				mav.addObject("cliente",cliente);
//				mav.addObject("listaServizi", listaServizi);
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//		
//	
//	public ModelAndView listaServiziPartecipante(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaServiziPartecipante";
//				ModelAndView mav = new ModelAndView(url);
//				if (Utils.isValid(request.getParameter("idUser"))) { //Proviene da fuori
//					dettaglio.setAppoIdPartecipante(Integer.parseInt(request.getParameter("idUser")));
//				}
//				
//				UtenteType partecipante = utenteDao.getUser(dettaglio.getAppoIdPartecipante());
//				String dataIniz = request.getParameter("dataIniz2");
//				String dataFine = request.getParameter("dataFine2");
//
//				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziPartecipante(dettaglio.getAppoIdPartecipante(), dataIniz, dataFine);
//				
//				logger.warn("Procedo al redirect "+url);
//				
//				mav.addObject("dataIniz", dataIniz);
//				mav.addObject("dataFine", dataFine);
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServiziAutista.html");
//				mav.addObject("command", partecipante);
//				mav.addObject("listaServizi", listaServizi);
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//	public ModelAndView listaAreePrivate(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//		try {
//			
//				
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				url = "listaAreePrivate";
//				ModelAndView mav = new ModelAndView(url);
//				String utente = request.getParameter("utente");
//				
//				
//				if (!Utils.isNull(session.getAttribute("areaInserita"))) {
//					request.setAttribute("areaInserita", session.getAttribute("areaInserita"));
//					session.removeAttribute("areaInserita");
//				}
//				
//				//resetto gli appo se proviene
//				dettaglio.setAppoIdArea(0);
//				dettaglio.setAppoNomeArea(null);
//				
//
//				
//				ArrayList<AreaType> areeList = areaDao.listaAreePrivate(dettaglio.getIdUser());
//				ArrayList<AutistaType> listaAutisti = areaDao.listaAutistiIdUser(dettaglio.getIdUser());
//				ArrayList<SorgenteType> listaSorgenti = areaDao.listaSorgentiIdUser(dettaglio.getIdUser());
//				
//				ArrayList<ClienteType> clientiList = utenteDao.listaClienti(dettaglio.getIdUser());
//				dettaglio.setClientiList(clientiList);
//				
//				logger.warn("Procedo al redirect "+url);
//				dettaglio.setAreeList(areeList);
//				dettaglio.setListaAutisti(listaAutisti);
//				dettaglio.setListaSorgenti(listaSorgenti);
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaAreePrivate.html");
//				return mav.addObject("dettaglio", dettaglio);
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}	
//
//	
//	public ModelAndView listaServiziSorgente(HttpServletRequest request, HttpServletResponse response, SorgenteType s) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaServiziSorgente";
//				ModelAndView mav = new ModelAndView(url);
////				UtenteType autista = utenteDao.getUser(idAutista);
//				
//				if (Utils.isValid(request.getParameter("idSorgente"))) {
//					dettaglio.setAppoNomeSorgente(request.getParameter("nome"));
//				}
//				
//				
//				String dataIniz = request.getParameter("dataIniz");
//				String dataFine = request.getParameter("dataFine");
//
//				ArrayList<ServizioType> listaServizi =  servizioDao.listaServiziSorgente(s.getIdSorgente(), dataIniz, dataFine);
//				
//				logger.warn("Procedo al redirect "+url);
//				
//				mav.addObject("dataIniz", dataIniz);
//				mav.addObject("dataFine", dataFine);
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServiziAutista.html");
//				mav.addObject("listaServizi", listaServizi);
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//	
//	
//	public ModelAndView listaAutisti(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaAutisti";
//				ModelAndView mav = new ModelAndView(url);
//				
//				if (dettaglio.getListaAutisti() == null) {
//					ArrayList<AutistaType> listaAutisti = areaDao.listaAutistiIdUser(dettaglio.getIdUser());
//					dettaglio.setListaAutisti(listaAutisti);
//				}
//				
//				String tipoOpe = request.getParameter("oper");
//				if (Utils.isValid(tipoOpe) && tipoOpe.equals("elimina")) {
//					int idAutista = Integer.parseInt(request.getParameter("id_autista"));
//					logger.debug("Controllo che l'autista sia effettivamente di sua competenza");
//					boolean isCompetente = false;
//					for (AutistaType a : dettaglio.getListaAutisti()) {
//						if (a.getIdAutista() == idAutista) {
//							isCompetente = true;
//							logger.debug("Puo' eliminare l'autista");
//							break;
//						}
//					}
//					if (isCompetente) {
//						boolean isDeleted = areaDao.eliminaAutista(idAutista);
//						if (isDeleted) {
//							ok.add(new LabelValueBean("Autista eliminato correttamente, tutti i servizi prima assegnati a lui sono adesso senza autista ", ""));
//							dettaglio.setListaAutisti(areaDao.listaAutistiIdUser(dettaglio.getIdUser()));
//						}
//					} else {
//						errori.add(new LabelValueBean("Mi spieghi cosa stai cercando di fare? ", ""));
//					}
//					
//					
//				}
//				
//				
//		    	if (errori.size() > 0) {
//		    		request.setAttribute("listaErrori", errori);
//		    	}
//		    	
//		    	if (ok.size() > 0) {
//		    		request.setAttribute("listaOk", ok);
//		    	}
//
//				
//				logger.warn("Procedo al redirect "+url);
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}	
//	
//	public ModelAndView listaCollaboratori(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//	    List<LabelValueBean> errori = new ArrayList<LabelValueBean>();
//	    List<LabelValueBean> ok = new ArrayList<LabelValueBean>();
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaCollaboratori";
//				ModelAndView mav = new ModelAndView(url);
//				
//				
//				logger.warn("Procedo al redirect "+url);
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}		
//	
//	
//	public ModelAndView listaSorgenti(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//		try {
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				
//				url = "listaSorgenti";
//				ModelAndView mav = new ModelAndView(url);
//				
//				logger.warn("Procedo al redirect "+url);
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}	
//	
//	
//	
//	
//	
//	
//	
//	public ModelAndView dettaglioServizio(HttpServletRequest request, HttpServletResponse response, ServizioType s) throws Exception {
//
//		final Logger logger = Logger.getLogger(getClass());
//		UtenteType dettaglio =  null;
//		String url = "dettaglioServizio";
//		try {
//			
//				HttpSession session = request.getSession(false);
//				if (session == null) {
//					logger.warn("Sessione Scaduta");
//				} else {
//					dettaglio = (UtenteType)session.getAttribute("dettaglio");
//				}
//				ModelAndView mav = new ModelAndView(url);
////				int idServ = Integer.parseInt(request.getParameter("idServ"));
//				
//				s =  servizioDao.dettaglioServizioIdServUser(s.getIdServUser(), dettaglio.getIdUser());
//				mav.addObject("servizio", s);
//				mav.addObject("back", request.getParameter("caller"));
//
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+(Utils.isNull(dettaglio) ? dettaglio.getIdUser() : "N/A"));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//	
//	
//
//	public ModelAndView profiloUtente(HttpServletRequest request, HttpServletResponse response) throws Exception {
//		UtenteType dettaglio =  null;
//		String url = null;
//		try {
//			
//			
//			HttpSession session = request.getSession(false);
//			if (Utils.isNull(session) || session.getAttribute("dettaglio") == null) {
//				session = request.getSession(true);
//				logger.warn("Sessione Scaduta");
//				sessioneScaduta(request, response);
//			} else {
//				dettaglio = (UtenteType)session.getAttribute("dettaglio");
//			}
//
//				url = "profiloUtentePrivato";
//				ModelAndView mav = new ModelAndView(url);
//				
//				
//				logger.warn("Procedo al redirect "+url);
//
//				mav.addObject("back", request.getParameter("caller"));
//				mav.addObject("caller", "listaServizi.html");
//				mav.addObject("dettaglio", dettaglio);
//				
//				return mav;
//				
//		}catch (Exception e) {
//			logger.error("SI E' VERIFICATO UN ERRORE");
//			logger.error("Utente: "+((dettaglio != null) ? ""+dettaglio.getIdUser(): "N/A" ));
//			logger.error(e);
//			return new ModelAndView("gestioneErrore").addObject(e);
//		}
//	}
//	
//	
//	
//	
//	private ModelAndView sessioneScaduta(HttpServletRequest request, HttpServletResponse response) throws Exception  {
//		logger.debug("Sessione scaduta, procedo al redirect");
//		return new ModelAndView("expired");
//		
//	}	
//	
//
//	private void sendJson(HttpServletResponse response, HashMap j) throws IOException {
//		Gson g = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
//		response.setContentType("application/json");
//		PrintWriter out = response.getWriter();
//		out.print(g.toJson(j));
//		out.flush();
//		out.close();
//		logger.warn("Procedo al invio di servizi JSON ");
//	}
//	public static void main(String[] args) {
//		a:active
//	}
//	
//		
//
//}
//
